From 9c7fd21cca31550912965191c62ba874fd8f7d62 Mon Sep 17 00:00:00 2001 From: "cl349@firebug.cl.cam.ac.uk" Date: Fri, 16 Sep 2005 22:27:04 +0000 Subject: [PATCH] Add bindings for xs_get_domain_path(). Signed-off-by: Christian Limpach --- tools/python/xen/lowlevel/xs/xs.c | 43 ++++++++++++++++++++++++ tools/python/xen/xend/xenstore/xsutil.py | 3 ++ 2 files changed, 46 insertions(+) diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c index cc3459e0b8..f3b62a174a 100644 --- a/tools/python/xen/lowlevel/xs/xs.c +++ b/tools/python/xen/lowlevel/xs/xs.c @@ -812,6 +812,48 @@ static PyObject *xspy_shutdown(PyObject *self, PyObject *args, PyObject *kwds) return val; } +#define xspy_get_domain_path_doc "\n" \ + "Return store path of domain.\n" \ + " domid [int]: domain id\n" \ + "\n" \ + "Returns: [string] domain store path.\n" \ + " None if domid doesn't exist.\n" \ + "Raises RuntimeError on error.\n" \ + "\n" + +static PyObject *xspy_get_domain_path(PyObject *self, PyObject *args, + PyObject *kwds) +{ + static char *kwd_spec[] = { "domid", NULL }; + static char *arg_spec = "i"; + int domid = 0; + + struct xs_handle *xh = xshandle(self); + char *xsval = NULL; + PyObject *val = NULL; + + if (!xh) + goto exit; + if (!PyArg_ParseTupleAndKeywords(args, kwds, arg_spec, kwd_spec, + &domid)) + goto exit; + Py_BEGIN_ALLOW_THREADS + xsval = xs_get_domain_path(xh, domid); + Py_END_ALLOW_THREADS + if (!xsval) { + if (errno == ENOENT) { + Py_INCREF(Py_None); + val = Py_None; + } else + PyErr_SetFromErrno(PyExc_RuntimeError); + goto exit; + } + val = PyString_FromString(xsval); + free(xsval); + exit: + return val; +} + #define xspy_fileno_doc "\n" \ "Get the file descriptor of the xenstore socket.\n" \ "Allows an xs object to be passed to select().\n" \ @@ -858,6 +900,7 @@ static PyMethodDef xshandle_methods[] = { XSPY_METH(release_domain), XSPY_METH(close), XSPY_METH(shutdown), + XSPY_METH(get_domain_path), XSPY_METH(fileno), { /* Terminator. */ }, }; diff --git a/tools/python/xen/xend/xenstore/xsutil.py b/tools/python/xen/xend/xenstore/xsutil.py index 1dca916dd8..d7a8de1a1e 100644 --- a/tools/python/xen/xend/xenstore/xsutil.py +++ b/tools/python/xen/xend/xenstore/xsutil.py @@ -18,3 +18,6 @@ def xshandle(): def IntroduceDomain(domid, page, port, path): return xshandle().introduce_domain(domid, page, port, path) + +def GetDomainPath(domid): + return xshandle().get_domain_path(domid) -- 2.30.2